// 创建单例 Singleton
// 立即执行函数 是 创建闭包的手段之一
let CreateSingleton = (function () {
    console.log('创建单例');
    // 立即执行函数 让这里多了一层作用域 好构建作用域链
    let instance;// 实例
    return function (name) {// constructor
        if (instance) {
            return instance;
        }
        this.name = name;
        return instance = this;//保存实例化对象，以后不再实例化了,绑死
    }
})();

CreateSingleton.prototype.getName = function () {
    console.log(this.name);
}

let singleton = new CreateSingleton('aaa');
let dalao = new CreateSingleton('dalao');
console.log(singleton.name);//aaa 因为大佬没有执行的机会，实例化已经给aaa了
console.log(singleton === dalao);//true 因为指向的地址一样
singleton.getName();// aaa
dalao.getName();// aaa